package ScalaStudy.chapter06

import ScalaStudy.chapter06.Student11.school

object test11_Object {
  def main(args: Array[String]): Unit = {


    /////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////   伴生对象  //////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////
    //一般将伴生对象中的属性作为静态变量，比如"合肥工业大学"


//    val student11 = new Student11("wq", 27)        //当private时构造器私有化时，不能直接调用参数
//    student11.printInfo()

    val student1 = Student11.newStudent("wq", 27)   //通过调用类中的方法进行实例化
    student1.printInfo()

    val student2 = Student11.apply("wq", 27)   //通过调用类中的方法进行实例化
    student2.printInfo()

    val student3 = Student11("wq", 27)   //使用apply可以省略掉，apply的方法名称
    student3.printInfo()


  }
}


//定义类

class Student11 private(val name: String, val age: Int){                     //private
//  val school : String = "arm"
  def printInfo(): Unit ={
    println(s"student46 name = ${name}, age = ${age}, school = ${school}")
  }
}

//定义伴生对象里

object Student11{
  val school : String = "合肥工业大学"

  //定义一个类的对象实例的创建方法
  def newStudent(name: String,age: Int): Student11 = {       //返回Student11类型的对象
    new Student11(name, age)                                 //通过方法实例化对象*******
  }
  def apply(name: String,age: Int): Student11 = {            //返回Student11类型的对象,工厂方法
    new Student11(name, age)                                 //通过方法实例化对象*******
  }
}